/**
 * 根据屏幕宽度调整根元素的font-size
 * Created by mhcai on 2019/4/25 14:01.
 */
let scale; // 缩放比例

(function (designWidth, maxWidth) {
    let doc = document,
        win = window;
    let docEl = doc.documentElement;
    let tid;
    let rootItem, rootStyle;

    function refreshRem() {
        let width = docEl.getBoundingClientRect().width;
        if (!maxWidth) {
            maxWidth = 4096;
        }
        if (width > maxWidth) {
            width = maxWidth;
        }
        //与淘宝做法不同，直接采用简单的rem换算方法1rem=100px
        // 为一定程度上适配 1024 * 768 分辨率，限制缩放值的最小值为 0.72（768 / 1080）
        scale = Math.max((width / designWidth), 0.72);
        let rem = scale * 100;
        //兼容UC开始
        rootStyle = 'html{font-size:' + rem + 'px !important}';
        rootItem = document.getElementById('rootsize') || document.createElement('style');
        if (!document.getElementById('rootsize')) {
            document.getElementsByTagName('head')[0].appendChild(rootItem);
            rootItem.id = 'rootsize';
        }
        if (rootItem.styleSheet) {
            rootItem.styleSheet.disabled || (rootItem.styleSheet.cssText = rootStyle)
        } else {
            try {
                rootItem.innerHTML = rootStyle
            } catch (f) {
                rootItem.innerText = rootStyle
            }
        }
        //兼容UC结束
        docEl.style.fontSize = rem + 'px';
    }
    refreshRem();

    win.addEventListener('resize', function () {
        clearTimeout(tid); //防止执行两次
        tid = setTimeout(refreshRem, 80);
    }, false);

    win.addEventListener('pageshow', function (e) {
        if (e.persisted) { // 浏览器后退的时候重新计算
            clearTimeout(tid);
            tid = setTimeout(refreshRem, 80);
        }
    }, false);

    /*if (doc.readyState === "complete") {
        doc.body.style.fontSize = "16px";
    } else {
        doc.addEventListener("DOMContentLoaded", function (e) {
            doc.body.style.fontSize = "16px";
        }, false);
    }*/
})(1920, 4096);
